import jwt from "jsonwebtoken";

export default defineEventHandler(async (event) => {
  // /api/user/* 这样的 api 中，只有 /api/user/login 和 /api/user/signup 不需要验证，其他都需要验证
  const regex = /^\/api\/user\/(?!login$|signUp$).*/;
  if (!regex.test(event.path)) {
    return;
  }
  const config = useRuntimeConfig();
  const token = getCookie(event, "token");

  if (!token) {
    throw createError({
      statusCode: 400,
      statusMessage: "无访问权限",
    });
  }

  try {
    const userData = jwt.verify(token, config.jwt.secret);
    event.context.user = userData;
  } catch (err) {
    deleteCookie(event, "token");
    throw createError({
      statusCode: 400,
      statusMessage: "Token 已过期",
    });
  }
});
